package com.ayit.car.controller.car;

import com.ayit.car.common.result.PageResult;
import com.ayit.car.common.result.Result;
import com.ayit.car.pojo.Models;
import com.ayit.car.pojo.dto.ModelsDTO;
import com.ayit.car.pojo.dto.ModelsPageQueryDTO;
import com.ayit.car.service.ModelsService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/car/models")
@Api(tags = "汽车品牌商品")
@Slf4j
public class ModelsController {

    @Autowired
    private ModelsService modelsService;

    /**
     * 根据品牌id查询汽车品牌商品列表
     * @return
     */
    @GetMapping("/list")
    @ApiOperation(value = "根据品牌id查询汽车品牌商品列表")
    public Result list(Long brandId) {
        log.info("根据品牌id查询汽车品牌商品列表: {}", brandId);
        if (brandId == null){
            return Result.success(modelsService.list());
        }
        QueryWrapper<Models> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("brand_id", brandId);
        List<Models> models = modelsService.list(queryWrapper);
        return Result.success(models);
    }

    /**
     * 获取汽车品牌商品详细信息
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    @ApiOperation(value = "获取汽车品牌商品详细信息")
    public Result<Models> getInfo(@PathVariable Long id) {
        log.info("获取汽车品牌商品详细信息: {}", id);
        Models models = modelsService.getById(id);
        return Result.success(models);
    }

    /**
     * 分页查询汽车品牌商品列表
     * @param modelsPageQueryDTO
     * @return
     */
    @GetMapping("/page")
    @ApiOperation(value = "分页查询汽车品牌商品列表")
    public Result<PageResult> getPage(ModelsPageQueryDTO modelsPageQueryDTO){
        PageResult pageResult = modelsService.pageQuery(modelsPageQueryDTO);
        return Result.success(pageResult);
    }

    /**
     * 添加汽车品牌商品
     * @return
     */
    @PostMapping("/add")
    @ApiOperation(value = "添加汽车品牌商品")
    public Result add(@RequestBody ModelsDTO modelsDTO) {
        log.info("添加汽车品牌商品: {}", modelsDTO);
        modelsService.insertModels(modelsDTO);
        return Result.success();
    }

    /**
     * 修改汽车品牌商品数据
     * @param modelsDTO
     * @return
     */
    @PutMapping("/update")
    @ApiOperation(value = "修改汽车品牌商品数据")
    public Result update(@RequestBody ModelsDTO modelsDTO) {
        log.info("修改汽车品牌商品: {}", modelsDTO);
        modelsService.updateModels(modelsDTO);
        return Result.success();
    }

    /**
     * 批量删除汽车品牌商品
     * @param ids
     * @return
     */
    @DeleteMapping("/delete")
    @ApiOperation(value = "批量删除汽车品牌商品")
    public Result delete(@RequestBody List<Long> ids) {
        log.info("批量删除汽车品牌商品: {}", ids);
        modelsService.deleteModelsByIds(ids);
        return Result.success();
    }
}
